package com.dmz.workflow.entity;


import com.alibaba.fastjson.annotation.JSONField;
import com.echronos.commons.utils.FilePathDeSerializer;
import com.echronos.commons.utils.FilePathSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;

/**
 * 流程信息实体类
 */
@Data
@TableName("ech_workflow_form_info")
public class FormInfo {

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 语言 cn中文 en英文
     */
    private String lang;

    /**
     * 租户ID
     */
    private String tenantId;

    /**
     * 应用ID
     */
    private Integer appId;

    /**
     * 版本号
     */
    private Integer version;

    /**
     * 工作流名
     */
    private String name;

    /**
     * 分组ID
     */
    private Integer groupId;

    /**
     * 模版图标
     */
    @JSONField(deserializeUsing = FilePathDeSerializer.class, serializeUsing = FilePathSerializer.class)
    private String icon;

    /**
     * 审批说明
     */
    private String approvalInstructions;

    /**
     * 审批人签名 0 非必签；1 必签
     */
    private Integer signature;

    /**
     * 审批意见填写提示
     */
    private String approvalAdvice;

    /**
     * 审批意见 0 不可见 1 可见
     */
    private Integer approvalAdviceType;

    /**
     * 审批人去重 0 不去重；1 连续去重；2 非连续去重
     */
    private Integer approvalRemoveRepetition;

    /**
     * 发起人审批自动通过, 1 为自动通过
     */
    private Integer autoApproval;

    /**
     * 通知抄送人 0 仅发起时通知；1 仅全部同意后通知；2 发起和全部同意后均通知
     */
    private Integer noticeCcPerson;

    /**
     * 是否公有 1 私有；0 公有
     */
    private Integer isPublic;

    /**
     * 状态；0 启用 1 禁用
     */
    private Integer status;

    /**
     * 是否已删除；0未删除 1已删除
     */
    private Integer isDeleted;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 修改人
     */
    @TableField(fill = FieldFill.UPDATE)
    private Integer updateUser;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime updateTime;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;

    /**
     * 表单的FormKey的json
     */
    private String formJson;

    /**
     * 工作流程定义ID
     */
    private String processDefinitionId;

    /**
     * 流程定义key
     */
    private String processDefinitionKey;

    /**
     * 是否为套件；0:否 1:是
     */
    private Integer isSuit;

    /**
     * 表单的FormKey用于关联流程任务的字段
     */
    private String formKey;

    /**
     * 公司id
     */
    private Integer companyId;

    /**
     * 排序 序号
     */
    private Integer sort;
}